package com.gsww.vue.criteria;


import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

/**
 * 
 * TODO(条件接口:用户提供条件表达式接口)
 * @author zhangxj
 * @date 2017年12月4日下午2:48:32
 *
 */
public interface Criterion {
	public enum Operator {
		// EQ:equals； NE:not equals； GT:大于；LT:小于；GTE：大于等于；LTE：小于等于；
		EQ, NE, LIKE, GT, LT, GTE, LTE, AND, OR
	}

	/**
	 * 
	 * TODO(hql表达式处理接口)
	 * @param root
	 * @param query
	 * @param builder
	 * @return Predicate  返回类型 
	 * @throws
	 */
	public Predicate toPredicate(Root<?> root, CriteriaQuery<?> query, CriteriaBuilder builder);
}
